/**
 * 模拟下拉框交互组件
 * 
 * @author wqhui
 */
define(function(require, exports, module) {
	// var overflowClass = 'overflow';
	
	module.exports = {
		/**
		 * 默认的z-index,会随着bind而递增
		 */
		zindex : 50,
		
		/**
		 * 绑定下拉框和模拟下拉框
		 * 
		 * @param selectId
		 * @param showDiv
		 */
		bind : function(selectId) {
			var select = $('#'+selectId);
			var showDiv = select.parent().find('.select_box').filter(function(){
				return $(this).attr('for') == selectId;
			});
			
			// 为适应select_a，增加一次判断
			if(showDiv.length == 0) {
				showDiv = select.parent().find('.select_a').filter(function(){
					return $(this).attr('for') == selectId;
				});
			}
			
			showDiv = showDiv[0];
			
			var _this = this;
			
			$(showDiv).unbind('click').click(function(event){   
				event.stopPropagation();
				_this.zindex++;
				var zIndex = _this.zindex;
				$(this).find(".option").css({
					'z-index' : zIndex
				}).toggle();
				$(this).parent().siblings().find(".option").hide();

				var optiondisplay=$(this).find(".option").css("display");
				if("none"==optiondisplay){
					$(this).removeClass("z25");
					$(this).removeClass("z20");
					$(this).addClass("z20");
				}else{
					$(this).removeClass("z25");
					$(this).removeClass("z20");
					$(this).addClass("z25");
				}
			});
			
			$(document).click(function(event){
				var eo = $(event.target);
				if($(".select_box").is(":visible") && eo.attr("class") != "option" && !eo.parent(".option").length) {
					$('.option').hide();
				}
				if($(".select_a").is(":visible") && eo.attr("class") != "option" && !eo.parent(".option").length) {
					$('.option').hide();
				}
			});
			/*赋值给文本框*/
			$(showDiv).find(".option a").click(function(){
				var value = $(this).text();
				$(this).parent().siblings(".select_txt").text(value);
				// $(this).parent().hide();
				
				var value = $(this).attr('ui:value');
				$('#' + selectId).val(value).change();
			 });
			
			/*
			$(showDiv).unbind('click').bind('click', function(event) {
				event.
				event.stopImmediatePropagation();
				_this.zindex++;
				var zIndex = _this.zindex;
				$(showDiv).find('.option').css({
					'z-index' : zIndex
				}).toggle();
				return false;
			});
			
			if ($(showDiv).find('.option').height() > 300) {
				$(showDiv).find('.option').addClass(overflowClass);
			} else {
				$(showDiv).find('.option').removeClass(overflowClass);
			}

			$(showDiv).find('.option a').bind('click',function(){
				var caption = $(this).html();
				$(showDiv).find('span').html(caption);
				$(this).parent().hide();
				
				var value = $(this).attr('ui:value');
				$('#' + selectId).val(value).change();
				
			});
			
			$(document).click(function(){
				var eo = $(event.target);
				if($(".select_box").is(":visible") && eo.attr("class") != "option" && !eo.parent(".option").length)
				$(showDiv).find('.option').hide();
			});
			*/
		},
		
		rebuild : function(selectId, data, clickFirst) {
			if(typeof(data) == 'undefined') {
				return;
			}
			// rebuild
			var select = $('#'+selectId);
			var showDiv = select.parent().find('.select_box').filter(function(){
				return $(this).attr('for') == selectId;
			})[0];
			var options = $(showDiv).find('.option');
			select.children().remove();
			options.children().remove();
			for(var key in data) {
				select.append('<option value="' + key + '">' + data[key] + '</option>');
				options.append('<a ui:value="' + key +'">' + data[key] + '</a>');
			}
			
			$(showDiv).find('a').unbind('click');
			this.bind(selectId);
			
			if(typeof(clickFirst) == 'undefined' || clickFirst) {
				var value = options.find('a').eq(0).text();
				$(options.find('a').eq(0)).parent().siblings(".select_txt").text(value);
				var value = options.find('a').eq(0).attr('ui:value');
				$('#' + selectId).val(value).change();
				$(showDiv).find(".option").hide();
			}
		}
	};
});
